class Ob:
    def __init__(self, name):
        self.name = name
        self.items = ['1', '2']

    def __str__(self):
     #   return f"<Ob name={self.name} items={self.items}>"
     return str(self.items)

    def __setitem__(self, index, value):
        self.items[index] = value

    def __mul__(self, num):
        self.items *= num

    def __len__(self):
        return len(self.items)

    def __delitem__(self, index):
        del self.items[index]

    def __hash__(self):
        return hash(self.name)

    def __eq__(self, other):
 #       return self.name == other.name and self.items == other.items
        return self.name

    def __repr__(self):
        return f'<{self.__class__.__name__} name={self.name} items={self.items}>'


a = Ob('tom')
b = Ob('tom')
print('a:', a)
a[0] = 'a'
print('a:', a)
a * 3
print('len:', len(a))
del a[1]
print('a:', a)
print('set:', {a, b})